/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import bitclub.Articulo;
import bitclub.ArticuloAlquilado;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TreeSet;

/**
 * @author Bit Company
 */
public class PArticuloAlquilado {

    /**
     * Introduce un nuevo paquete de ArticuloAlquilado's en la base de datos 
     */
    public static void nuevoBD(TreeSet<ArticuloAlquilado> listArticuloAlquilado, int alquilerId) {
        Connection conexion = null;
        Statement statement = null;
        DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");

        try {
            Class.forName("com.mysql.jdbc.Driver");
            conexion = DriverManager.getConnection(PDatos.baseDatos, PDatos.usuario, PDatos.password);
            statement = conexion.createStatement();

            //Ciertos campos requieren tratamiento previo para pasarlo a String

            for (ArticuloAlquilado articuloAlquilado : listArticuloAlquilado) {
                Date dateFechaEntrega = articuloAlquilado.getFechaEntrega();
                String stringFechaEntrega = dateFormat.format(dateFechaEntrega);

                //Pasamos la cadena del INSERT a la base de datos
                String pepe = "INSERT INTO ARTICULOALQUILADO (ALQUILERES_ID, ARTICULO_ID, FECHA_ENTREGA, PRECIO) "
                        + "VALUES (" + alquilerId + ", " + articuloAlquilado.getArticulo().getId() + ", '"
                        + stringFechaEntrega + "', " + articuloAlquilado.getPrecioAlquiler() + ")";
                statement.executeUpdate(pepe);
            }

        } catch (Exception ex) {
            System.out.println(ex.toString());
        } finally {
            try {
                statement.close();
                conexion.close();
            } catch (Exception ex) {
                System.out.println(ex.toString());
            }
        }
    }

    /**
     * Elimina un ArticuloAlquilado de la base de datos
     */
    public static void eliminarBD(ArticuloAlquilado articuloAlquilado) {
        Connection connection = null;
        Statement statement = null;

        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(PDatos.baseDatos, PDatos.usuario, PDatos.password);
            statement = connection.createStatement();
            int id = articuloAlquilado.getArticulo().getId();
            statement.executeUpdate("DELETE FROM ARTICULOALQUILADO WHERE ARTICULO_ID=" + id);
        } catch (Exception ex) {
            System.out.println(ex.toString());
        } finally {
            try {
                statement.close();
                connection.close();
            } catch (Exception ex) {
                System.out.println(ex.toString());
            }
        }
    }

    public static TreeSet<ArticuloAlquilado> seleccionarArticuloAlquiladoIddeAlquilerBD(int id) {

        TreeSet<ArticuloAlquilado> listArticulosAlquilados = new TreeSet();
        ArticuloAlquilado articuloAlquilado;
        Articulo articulo;

        Connection conexion = null;
        Statement statement = null;
        ResultSet resultSet = null;

        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

        try {
            Class.forName("com.mysql.jdbc.Driver");
            conexion = DriverManager.getConnection(PDatos.baseDatos, PDatos.usuario, PDatos.password);
            statement = conexion.createStatement();
            resultSet = statement.executeQuery("SELECT precio, fecha_entrega, alquileres_id, articulo_id from articuloalquilado where alquileres_id = '" + id + "'");

            while (resultSet.next()) {
                articulo = PArticulo.seleccionarPorIdBD(resultSet.getInt("articulo_id"));
                articuloAlquilado = new ArticuloAlquilado(articulo, dateFormat.parse(resultSet.getString("fecha_entrega")), resultSet.getInt("precio"));

                listArticulosAlquilados.add(articuloAlquilado);
            }
        } catch (Exception ex) {
            System.out.println(ex.toString());
        } finally {
            try {
                resultSet.close();
                statement.close();
                conexion.close();
            } catch (Exception ex) {
                System.out.println(ex.toString());
            }
        }
        return listArticulosAlquilados;
    }
}
